package com.dd.cloud.user.mapper.agent;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dd.cloud.user.entity.agent.Agent;
import com.dd.cloud.user.req.agent.AgentCountChartStatisticsReq;
import com.dd.cloud.user.req.agent.AgentDoctorPageReq;
import com.dd.cloud.user.req.agent.AgentMechanPageReq;
import com.dd.cloud.user.req.agent.AgentPageReq;
import com.dd.cloud.user.res.agent.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author Lx
 * @version 1.0
 */
public interface AgentMapper extends BaseMapper<Agent> {
    /**
     * 查询代理商列表
     *
     * @param iPage
     * @param req
     * @return
     */
    IPage<AgentPageRes> queryAgentPage(IPage<?> iPage, @Param("req") AgentPageReq req);

    /**
     * 查询代理商详情
     *
     * @param id
     * @return
     */
    AgentDetailRes queryAgentDetail(@Param("id") Integer id);

    /**
     * 查询代理商代理医生列表 分页
     *
     * @param iPage
     * @param req
     * @return
     */
    IPage<AgentDoctorPageRes> queryAgentDoctorPage(IPage<?> iPage, @Param("req") AgentDoctorPageReq req);

    /**
     * 查询代理商代理机构列表 分页
     *
     * @param iPage
     * @param req
     * @return
     */
    IPage<AgentMechanPageRes> queryAgentMechanPage(IPage<?> iPage, @Param("req") AgentMechanPageReq req);

    /**
     * 统计代理商数量列表 医生
     *
     * @param req
     * @return
     */
    List<AgentCountChartStatisticsListRes> queryAgentCountChartStatisticsListDoctor(@Param("req") AgentCountChartStatisticsReq req);

    /**
     * 统计代理商数量列表 机构
     *
     * @param req
     * @return
     */
    List<AgentCountChartStatisticsListRes> queryAgentCountChartStatisticsListMechan(@Param("req") AgentCountChartStatisticsReq req);

    /**
     * 统计代理商数量 医生
     *
     * @param req
     * @return
     */
    Integer queryAgentCountChartStatisticsCountDoctor(@Param("req") AgentCountChartStatisticsReq req);

    /**
     * 统计代理商数量 机构
     *
     * @param req
     * @return
     */
    Integer queryAgentCountChartStatisticsCountMechan(@Param("req") AgentCountChartStatisticsReq req);
}
